package com.join.template.core.grammar.tool;

import com.join.template.core.constant.EntityType;
import com.join.template.core.constant.TemplateType;
import com.join.template.core.factory.JoinFactory;
import com.join.template.core.grammar.generate.Generate;
import com.join.template.core.grammar.info.GrammarInfo;
import com.join.template.core.grammar.config.GenerateConfig;
import com.join.template.core.listener.GenerateListener;

import java.util.List;
import java.util.Map;

/**
 * @author CAOYOU
 * @Title: 实体类语法生成器
 * @date 2019/8/1915:49
 */
public interface GrammarTool extends Generate<Object, Object> {

    /**
     * 设置模版引擎工厂
     *
     * @param joinFactory
     * @return com.join.template.core.grammar.tool.GrammarTool<T>
     * @author CAOYOU/625954232@qq.com
     * @date 2019/10/21 12:50
     */
    GrammarTool setJoinFactory(JoinFactory joinFactory);

    /**
     * 创建生成器
     *
     * @param bean
     * @return com.join.template.core.grammar.tool.GrammarTool
     * @author CAOYOU/625954232@qq.com
     * @date 2019/10/21 15:26
     */
    Generate createGenerate(Class bean);

    /**
     * 获取生成语法解释
     *
     * @param
     * @return
     * @author CAOYOU/625954232@qq.com
     * @date 2019/9/6 15:33
     */
    Map<Integer, String> generateExample();


    /**
     * 预览
     *
     * @param text
     * @param previewSize 预览列表的个数
     * @return java.lang.String
     * @author CAOYOU/625954232@qq.com
     * @date 2019/8/22 10:01
     */
    String preview(String text, int previewSize);

}
